#ifndef TC_CONFIG_WIN32_H
#define TC_CONFIG_WIN32_H

/** \file ConfigWin32.h 
 * Configuration items for Windows platform
 *
 * (c) Copyright Semih Cemiloglu
 * All rights reserved, see COPYRIGHT file for details.
 *
 * $Id: ConfigWin32.h 119 2006-06-21 04:57:25Z semihc $
 *
 *
 */


/* Make sure we are on Windows */
#ifndef TC_PLAT_Win32
# error This file should be included only on Windows
#endif

/* Determine architecture */
#if defined(_WIN64)
#  define TC_ARCH __amd64
#  define TC_ARCH_amd64 1
#elif defined(_WIN32)
#  define TC_ARCH __i386
#  define TC_ARCH_i386 1
#else
#  error Unknown Windows architecture
#endif

/* Determine compiler */
#if defined(_MSC_VER)
#  define TC_COMP VCpp
#  define TC_COMP_VCpp 1
#else
#  error Unknown C/C++ compiler on Windows
#endif

/* Win32 is the default threading model */
#define TC_USE_WIN32_THREADS 1

/* Ident macro */
#define TC_IDENT(ID) __pragma(comment( user, __FILE__ " " __DATE__ " " __TIME__ ID ))


#ifdef TC_COMP_VCpp
#  define TC_NO_SNPRINTF
   /* Decorated function name __FUNCDNAME__ is not very helpful */
#  define TC_FUNCTION __FUNCTION__
   /* Size of ::* is different in between virtual and non-virtual classes. */
#  define TC_VTL_PTR_TO_MEMBER_HACK
   /* Thread local storage */
#  define TC_THREAD_LOCAL __declspec(thread)
#endif

#ifdef TC_COMP_ICpp
#  define TC_NO_SNPRINTF
#  define TC_VTL_PTR_TO_MEMBER_HACK
#  define TC_FUNCTION __FUNCTION__
#endif

#ifdef TC_COMP_Como
#  define TC_NO_SNPRINTF
#  define TC_NO_OBJTRACELIGHT
#  define TC_NO_CHECKEDITERATOR
#endif


#endif /* TC_CONFIG_WIN32_H */
